package keter.combofs.core;

import keter.combofs.model.ComboFile;
import keter.combofs.sequence.Sequence;

import java.io.IOException;
import java.util.Map;

/**
 * 统一文件系统
 */
public interface ComboFs {

    Sequence sequence = new Sequence(1);

    /**
     * 根据文件ID获取文件对象：读取对象完整信息，性能一般
     * @param id
     * @return
     */
    ComboFile getComboFile(Long id) throws IOException;

    /**
     * 根据文件ID获取文件流：性能最好
     * @param id
     * @return
     * @throws IOException
     */
    byte[] getBytes(Long id) throws IOException;

    /**
     * 保存文件
     * @param b 文件字节数组
     * @return
     * @throws IOException
     */
    ComboFile save(byte[] b) throws IOException;


    ComboFile save(byte[] b, String fileName) throws IOException;


    /**
     * 包含元数据保存文件
     * @param b
     * @param fileName
     * @param fileMeta
     * @return
     * @throws IOException
     */
    ComboFile save(byte[] b, String fileName, Map fileMeta) throws IOException;

}
